gdk: Always emit motion after enter
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 20 Nov 2017 17:54:40 +0000 (18:54 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 30 Nov 2017 18:26:48 +0000 (19:26 +0100)
After a pointer emulating GDK_TOUCH_END event triggering a fake leave
notify with GDK_CROSSING_TOUCH_END mode, pointer_under_window will be
unset, which will make the next motion/touch_update event to trigger
an enter notify event again.

Up till there, that's fine, however the motion event is just consumed
in favor of the just synthesized enter notify event. This is unexpected
to clients like spice-gtk that will only update coordinates from motion
events, sending both enter and motion is more consistent with X11 and
will make them happy.

https://bugzilla.gnome.org/show_bug.cgi?id=791039

gdk/gdkwindow.c

index 79804cdacdac963cbc157e724d05a5e8791c9650..3ac80e910adab39ef20fe55ea9afb1cb1baa1173 100644 (file)
@@ -9294,8 +9294,9 @@ proxy_pointer_event (GdkDisplay                 *display,
                                       serial, non_linear);
       _gdk_display_set_window_under_pointer (display, device, pointer_window);
     }
-  else if (source_event->type == GDK_MOTION_NOTIFY ||
-           source_event->type == GDK_TOUCH_UPDATE)
+
+  if (source_event->type == GDK_MOTION_NOTIFY ||
+      source_event->type == GDK_TOUCH_UPDATE)
     {
       GdkWindow *event_win;
       guint evmask;